In [1]:
import em1d
import numpy
# Time step
dt = 0.019
# Simulation time
tmax = 22.8
# Number of cells
nx = 1000
# Simulation box size
box = 20.0
## Background plasma
# Particles per cell
ppc = 128
# Use a step density profile
electrons = em1d.Species( "electrons", -1.0, ppc,
density = em1d.Density( type = "step", start = 20.0))
# Initialize simulation
sim = em1d.Simulation( nx, box, dt, species = electrons )
# Add laser pulse
sim.add_laser( em1d.Laser( start = 17.0, fwhm = 2.0, a0 = 1.0, omega0 = 10.0, polarization = numpy.pi/2 ))
# Set moving window
sim.set_moving_window()
# Set current smoothing
sim.set_smooth( em1d.Smooth(xtype = "compensated", xlevel = 4) )
# Run the simulation
sim.run( tmax )
In [2]:
import matplotlib.pyplot as plt
fig, ax1 = plt.subplots()
# Plot values at the center of the cells
xmin = sim.emf.dx/2
xmax = sim.emf.box - sim.emf.dx/2
ax1.plot(numpy.linspace(xmin, xmax, num = sim.nx), sim.emf.Ex, label = "$E_1$" )
ax1.set_xlabel("x1")
ax1.set_ylabel("E1")
ax2 = ax1.twinx()
ax2.plot(numpy.linspace(xmin, xmax, num = sim.nx), numpy.abs(electrons.charge()),'r', label = "$|n|$" , alpha = 0.8)
ax2.set_ylabel("|$n$|")
ax2.set_ylim(0,2)
plt.title("Longitudinal Electric Field and Plasma Density\n t = {:g}".format(sim.t))
plt.grid(True)
fig.legend(loc = (0.75,0.70))
fig.tight_layout()
plt.show()
In [3]:
import matplotlib.pyplot as plt
# Simple function to convert particle positions
x = lambda s : (s.particles['ix'] + s.particles['x']) * s.dx
plt.plot(x(electrons), electrons.particles['ux'], '.', ms = 0.2)
plt.xlabel("x1")
plt.ylabel("u1")
plt.title("u1-x1 phasespace\nt = {:g}".format(sim.t))
plt.grid(True)
plt.show()
In [ ]: